package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionariocargo;

import java.util.Date;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

import br.gov.mi.corporativo.dominio.entidade.rhmi.FuncionarioCargo;

@WebService
public interface FuncionarioCargoEndPoint {
	
	
	@WebMethod(operationName="listarTodosCargosFuncionarios")
	public @WebResult(name="listaFuncionarioCargo") List<FuncionarioCargo> recuperarTodos();
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorIdFuncionarioCargo")
	public @WebResult(name="funcionarioCargo")FuncionarioCargo recuperarPorIdFuncionarioCargo(
		   @WebParam(name="idFuncionarioCargo")Long idFuncionarioCargo);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorFuncionarioByIdFuncionario")
	public @WebResult(name="funcionarioCargo")FuncionarioCargo recuperarPorFuncionarioByIdFuncionario(
		   @WebParam(name="funcionarioByIdFuncionario")Long funcionarioByIdFuncionario);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorFuncionarioByIdFuncionarioChefeImediato")
	public @WebResult(name="funcionarioCargo")FuncionarioCargo recuperarPorFuncionarioByIdFuncionarioChefeImediato(
		   @WebParam(name="funcionarioByIdFuncionarioChefeImediato")Long funcionarioByIdFuncionarioChefeImediato);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorSituacaoFuncional")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorSituacaoFuncional(
		@WebParam(name="situacaoFuncional")Long situacaoFuncional);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorUnidadeEstruturaByIdUnidadeEstruturaLotacao")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorUnidadeEstruturaByIdUnidadeEstruturaLotacao(
		@WebParam(name="unidadeEstruturaByIdUnidadeEstruturaLotacao")Long unidadeEstruturaByIdUnidadeEstruturaLotacao);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorCargoComissionado")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorCargoComissionado(
		@WebParam(name="cargoComissionado")Long cargoComissionado);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorCargo")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorCargo(
		@WebParam(name="cargo")Long cargo);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorUnidadeEstruturaByIdUnidadeEstruturaExercicio")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorUnidadeEstruturaByIdUnidadeEstruturaExercicio(
		@WebParam(name="unidadeEstruturaByIdUnidadeEstruturaExercicio")Long unidadeEstruturaByIdUnidadeEstruturaExercicio);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorDtInicio")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorDtInicio(
		@WebParam(name="dtInicio")Date dtInicio);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorDtTermino")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorDtTermino(
		@WebParam(name="dtTermino")Date dtTermino);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorNmAutoridade")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorNmAutoridade(
		@WebParam(name="nmAutoridade")String nmAutoridade);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorNrEscalao")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorNrEscalao(
		@WebParam(name="nrEscalao")String nrEscalao);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorCsTipoGratificacao")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorCsTipoGratificacao(
		@WebParam(name="csTipoGratificacao")String csTipoGratificacao);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorNrCargaHoraria")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorNrCargaHoraria(
		@WebParam(name="nrCargaHoraria")Long nrCargaHoraria);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorStCargoEfetivo")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorStCargoEfetivo(
		@WebParam(name="stCargoEfetivo")String stCargoEfetivo);
	
	@WebMethod(operationName="recuperarFuncionarioCargoPorStRegistro")
	public @WebResult(name="listaFuncionarioCargo")List<FuncionarioCargo> recuperarPorStRegistro(
		@WebParam(name="stRegistro")String stRegistro);
	
	
	
	
}
